package com.rockwell.sniffyhunter.utils;


import com.rockwell.sniffyhunter.model.UnloadMazeNavigator;
public enum UnloadMazeNavigatorState implements IStateMachine {
	START {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return CHECK_BEFORE_START_JOG;
		}
	},
	CHECK_BEFORE_START_JOG {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((UnloadMazeNavigator)stateObject).checkBeforeJog();
		}
	},
	ROTATE_BEFORE_START_JOG {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((UnloadMazeNavigator)stateObject).rotateBeforeJog();
		}
	},
	START_JOG {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((UnloadMazeNavigator)stateObject).startJog();
		}
	},
	SCAN {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((UnloadMazeNavigator)stateObject).scan();
		}
	},
	MOVE_ARM_UP {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((UnloadMazeNavigator)stateObject).moveArmUp();
		}
	},
	STOP_JOG {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((UnloadMazeNavigator)stateObject).stopJog();
		}
	},
	OVER_JOG_BEFORE_TURN {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((UnloadMazeNavigator)stateObject).overJogBeforeTurn();
		}
	},
	DETERMINE_NEXT_ACTION {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((UnloadMazeNavigator)stateObject).determineNextAction();
		}
	},
	CHECK_OVER_JOG_BEFORE_TURN_DONE {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((UnloadMazeNavigator)stateObject).checkOverJogBeforeTurnDone();
		}
	},
	TURN {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((UnloadMazeNavigator)stateObject).turn();
		}
	},
	MOVE_TO_CHECK_IF_WALL_HIT_AFTER_TURN {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((UnloadMazeNavigator)stateObject).moveToCheckIfWallHitAfterTurn();
		}
	},
	CHECK_IF_WALL_HIT_AFTER_TURN {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((UnloadMazeNavigator)stateObject).checkIfWallHitAfterTurn();
		}
	},
	MOVE_BACK_DUE_TO_WALL_HIT_AFTER_TURN {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((UnloadMazeNavigator)stateObject).moveBackDueToWallHitAfterTurn();
		}
	},
	ROTATE_TO_AVOID_WALL_AFTER_TURN {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((UnloadMazeNavigator)stateObject).rotateToAvoidWallAfterTurn();
		}
	},
	UNLOAD_TREASURE {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((UnloadMazeNavigator)stateObject).unloadTreasure();
		}
	},
	MOVE_OUT_OF_MAZE {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((UnloadMazeNavigator)stateObject).moveOutOfMaze();
		}
	},
	DONE {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return START;
		}
	};
}
